package com.zjw.demo.vertx.starter.plugin.impl.database;

import com.zjw.demo.vertx.starter.template.convert.IRowConvert;

import java.lang.annotation.*;


/**
 * 注解此方法的参数，第一个一定是IFutureTask<List<T>>类型，
 *
 * @see com.zjw.demo.vertx.starter.smi.IFutureTask
 * <p>
 * 占位符用:xxx表示，
 * @see SQLParams
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SQL {

  /**
   * 需要执行的SQL语句，
   * <p>
   * 比如 select * from user where id=:id
   * <p>
   * 注意，:id的实参会从函数中去获取，只能是基本类型+String
   */
  String value();

  /**
   * 映射方法指定的转换器，如果没有则采用
   *
   * @see SQLField
   * 方式去匹配数据库字段名，
   */
  Class<? extends IRowConvert> convert() default IRowConvert.class;
}
